package com.pcbly.web.components.utils.theme;

import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.opensymphony.xwork2.ActionContext;

@SuppressWarnings("unchecked")
public interface ThemeManager {
	public abstract String getThemeHome();

	public abstract String getThemeHome(Theme theme);

	public abstract Collection getThemes();

	public abstract List getThemesSorted();

	public abstract Theme getTheme(String s);

	public abstract Map getThemeMaps();

	public abstract Theme getGlobalTheme();

	public abstract Theme getTheme(ThemeMap thememap);

	public abstract Theme addTheme(Theme theme);

	public abstract Theme addTheme(Theme theme, boolean flag);

	public abstract Theme updateTheme(Theme theme);

	public abstract void deleteTheme(Theme theme);

	public abstract List determineThemes(ActionContext actioncontext,
			HttpServletRequest httpservletrequest);

	public abstract void addThemeMap(String s, ThemeMap thememap);

	public abstract void deleteThemeMap(ThemeMap thememap);

	public abstract void reloadThemeMaps();

//	public abstract void moveTheme(Theme theme, String s)
//			throws ReportableSkinException;

	public abstract void deleteThemeByName(String s, boolean flag);

	public abstract String getPathForTheme(Theme theme);

	public abstract File getDirectoryForTheme(Theme theme);

	public abstract void deleteGlobalThemeMap();

	public abstract void installThemeZip(File file, String s, String s1)
			throws Exception;

}
